/**
 *? 加载地图
 */
import { reactive } from 'vue'
const data = reactive({
  map: '',
  polyEditor: '',
  mouseTool: '',
  polygon: '', // 覆盖物
  location: {
    lng: '',
    lat: ''
  },
  path: []
})
export const mapInit = (mapConfig, dom) => {
  data.map = new AMap.Map(dom, {
    viewMode: mapConfig.viewMode, // 默认使用 2D 模式，如果希望使用带有俯仰角的 3D 模式，请设置 viewMode: '3D'
    zoom: mapConfig.zoom, // 初始化地图层级
    center: mapConfig.location, // 初始化地图中心点
  })
  data.map.on("click", showInfoClick)
  return data.map
}
/**
 ** 添加画图功能
 */
/*  export const addDrawingManager = (setting) => {
  if (data.polyEditor) {//判断存在多边形围栏就先取消编辑并清除之前画的多边形围栏
    data.polyEditor.close()
    data.map.remove(data.polygon)
  }
  if (data.mouseTool) {//如果鼠标工具存在先关闭鼠标工具
    data.mouseTool.close(true)
  }
  data.mouseTool = new AMap.MouseTool(data.map);
  // MouseTool(map);
  // 绘制多边形
  data.mouseTool.polygon();
  data.polygon = new AMap.Polygon({
    path: data.path,
    map: data.map,
    ...setting
  });
  // 多边形绘制完成后的回调
  data.mouseTool.on("draw", function (e) {
    // 合并已有多边形的点集和新的点集
    data.path = data.path.concat(e.obj.getPath())
    data.mouseTool.close(true);
    // 创建新的多边形，并设置合并后的点集
    data.polygon.setPath(data.path);
    // 创建一个多边形编辑器对象
    data.polyEditor = new AMap.PolygonEditor(data.map, data.polygon)
    // 添加编辑器对象到地图上
    data.polyEditor.open();
  })
  return {
    polyEditor: data.polyEditor,
    polygon: data.polygon
  }
} */

/**
 *@description 获取点击的经纬度
 */
 export function showInfoClick(e) {
  console.log('e', e)
  data.location.lng = e.lnglat.getLng() //记录最后一次点击的经纬度
  data.location.lat = e.lnglat.getLat()
}

/**
 *! 官方示例: 添加画图工具
 */
 export const addDrawingManager = () => {
  if (data.polyEditor) {//判断存在多边形围栏就先取消编辑并清除之前画的多边形围栏
    data.polyEditor.close()
  }
  data.polyEditor = new AMap.PolygonEditor(data.map)
  data.polyEditor.on('add', function (attr) {
    console.log(data);
    let polygon = attr.target;
    data.polyEditor.addAdsorbPolygons(polygon)
    polygon.on('dblclick', () => {
      data.polyEditor.setTarget(polygon);
      data.polyEditor.open()
    })
  })
  return data.polyEditor
 }